package com.woniu.trader.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;

/**
 * 
 * @TableName distributor
 */
@TableName(value ="distributor")
@Data
public class Distributor implements Serializable {
    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Integer id;

    /**
     * 是否有直接客户
     */
    private Integer hasDirectCustomer;

    /**
     * 分销商代码
     */
    private String distributorCode;

    /**
     * 分销商名称
     */
    private String distributorName;

    /**
     * 英文名称
     */
    private String englishName;

    /**
     * 公司地址
     */
    private String companyAddress;

    /**
     * 邮编
     */
    private String postalCode;

    /**
     * 公司性质
     */
    private String companyNature;

    /**
     * 公司电话
     */
    private String companyPhone;

    /**
     * 公司联系人
     */
    private String companyContact;

    /**
     * 公司传真
     */
    private String companyFax;

    /**
     * 与XXXX业务往来邮箱
     */
    private String businessEmail;

    /**
     * 公司法人
     */
    private String legalPerson;

    /**
     * 法人手机
     */
    private String legalPersonPhone;

    /**
     * 公司总经理
     */
    private String generalManager;

    /**
     * 总经理手机
     */
    private String generalManagerPhone;

    /**
     * 组织机构代码
     */
    private String organizationCode;

    /**
     * 税号
     */
    private String taxNumber;

    /**
     * 开户行
     */
    private String bankName;

    /**
     * 帐号
     */
    private String accountNumber;

    /**
     * 业务简介
     */
    private String businessDescription;

    /**
     * 业务覆盖区域
     */
    private String businessCoverage;

    /**
     * 产品范围
     */
    private String productRange;

    /**
     * 目前代理品牌
     */
    private String currentBrands;

    /**
     * 本年度XXXX预计T/O
     */
    private BigDecimal expectedTurnover;

    /**
     * 是否为分公司
     */
    private Integer isBranch;

    /**
     * 母公司代码
     */
    private String parentCompanyCode;

    /**
     * 母公司名称
     */
    private String parentCompanyName;

    /**
     * 母公司地址
     */
    private String parentCompanyAddress;

    /**
     * 母公司分销商类型
     */
    private String parentDistributorType;

    /**
     * 母公司电话
     */
    private String parentCompanyPhone;

    /**
     * 申请分销商类别
     */
    private String applicationDistributorType;

    /**
     * 级别
     */
    private String level;

    /**
     * 授权区域
     */
    private String authorizedArea;

    /**
     * 授权行业
     */
    private String authorizedIndustry;

    /**
     * 公司申请折扣
     */
    private BigDecimal requestedDiscount;

    /**
     * 有效截止日期
     */
    private Date validityEndDate;

    /**
     * 年度指标（万元）
     */
    private BigDecimal annualTarget;

    /**
     * 总指标
     */
    private BigDecimal totalTarget;

    /**
     * 目标类型
     */
    private Object targetType;

    /**
     * 收货单位
     */
    private String shippingCompany;

    /**
     * 收货地址
     */
    private String shippingAddress;

    /**
     * 收货人
     */
    private String shippingContact;

    /**
     * 收货邮编
     */
    private String shippingPostalCode;

    /**
     * 收货电话
     */
    private String shippingPhone;

    /**
     * 收货传真
     */
    private String shippingFax;

    /**
     * 收货手机
     */
    private String shippingMobile;

    /**
     * 开票单位
     */
    private String billingCompany;

    /**
     * 开票地址
     */
    private String billingAddress;

    /**
     * 开票电话
     */
    private String billingPhone;

    /**
     * 邮寄地址
     */
    private String mailingAddress;

    /**
     * 收票人
     */
    private String billingContact;

    /**
     * 收票手机
     */
    private String billingMobile;

    /**
     * 销售
     */
    private String saleMan;

    /**
     * 上传工商营业执照
     */
    private byte[] businessLicense;

    /**
     * 上传税务登记证
     */
    private byte[] taxRegistrationCertificate;

    /**
     * 上传组织机构代码证
     */
    private byte[] organizationCodeCertificate;

    /**
     * 上传上年度的财务报告
     */
    private byte[] financialReport;

    /**
     * 附件上传
     */
    private byte[] attachment;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    @Override
    public boolean equals(Object that) {
        if (this == that) {
            return true;
        }
        if (that == null) {
            return false;
        }
        if (getClass() != that.getClass()) {
            return false;
        }
        Distributor other = (Distributor) that;
        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
            && (this.getHasDirectCustomer() == null ? other.getHasDirectCustomer() == null : this.getHasDirectCustomer().equals(other.getHasDirectCustomer()))
            && (this.getDistributorCode() == null ? other.getDistributorCode() == null : this.getDistributorCode().equals(other.getDistributorCode()))
            && (this.getDistributorName() == null ? other.getDistributorName() == null : this.getDistributorName().equals(other.getDistributorName()))
            && (this.getEnglishName() == null ? other.getEnglishName() == null : this.getEnglishName().equals(other.getEnglishName()))
            && (this.getCompanyAddress() == null ? other.getCompanyAddress() == null : this.getCompanyAddress().equals(other.getCompanyAddress()))
            && (this.getPostalCode() == null ? other.getPostalCode() == null : this.getPostalCode().equals(other.getPostalCode()))
            && (this.getCompanyNature() == null ? other.getCompanyNature() == null : this.getCompanyNature().equals(other.getCompanyNature()))
            && (this.getCompanyPhone() == null ? other.getCompanyPhone() == null : this.getCompanyPhone().equals(other.getCompanyPhone()))
            && (this.getCompanyContact() == null ? other.getCompanyContact() == null : this.getCompanyContact().equals(other.getCompanyContact()))
            && (this.getCompanyFax() == null ? other.getCompanyFax() == null : this.getCompanyFax().equals(other.getCompanyFax()))
            && (this.getBusinessEmail() == null ? other.getBusinessEmail() == null : this.getBusinessEmail().equals(other.getBusinessEmail()))
            && (this.getLegalPerson() == null ? other.getLegalPerson() == null : this.getLegalPerson().equals(other.getLegalPerson()))
            && (this.getLegalPersonPhone() == null ? other.getLegalPersonPhone() == null : this.getLegalPersonPhone().equals(other.getLegalPersonPhone()))
            && (this.getGeneralManager() == null ? other.getGeneralManager() == null : this.getGeneralManager().equals(other.getGeneralManager()))
            && (this.getGeneralManagerPhone() == null ? other.getGeneralManagerPhone() == null : this.getGeneralManagerPhone().equals(other.getGeneralManagerPhone()))
            && (this.getOrganizationCode() == null ? other.getOrganizationCode() == null : this.getOrganizationCode().equals(other.getOrganizationCode()))
            && (this.getTaxNumber() == null ? other.getTaxNumber() == null : this.getTaxNumber().equals(other.getTaxNumber()))
            && (this.getBankName() == null ? other.getBankName() == null : this.getBankName().equals(other.getBankName()))
            && (this.getAccountNumber() == null ? other.getAccountNumber() == null : this.getAccountNumber().equals(other.getAccountNumber()))
            && (this.getBusinessDescription() == null ? other.getBusinessDescription() == null : this.getBusinessDescription().equals(other.getBusinessDescription()))
            && (this.getBusinessCoverage() == null ? other.getBusinessCoverage() == null : this.getBusinessCoverage().equals(other.getBusinessCoverage()))
            && (this.getProductRange() == null ? other.getProductRange() == null : this.getProductRange().equals(other.getProductRange()))
            && (this.getCurrentBrands() == null ? other.getCurrentBrands() == null : this.getCurrentBrands().equals(other.getCurrentBrands()))
            && (this.getExpectedTurnover() == null ? other.getExpectedTurnover() == null : this.getExpectedTurnover().equals(other.getExpectedTurnover()))
            && (this.getIsBranch() == null ? other.getIsBranch() == null : this.getIsBranch().equals(other.getIsBranch()))
            && (this.getParentCompanyCode() == null ? other.getParentCompanyCode() == null : this.getParentCompanyCode().equals(other.getParentCompanyCode()))
            && (this.getParentCompanyName() == null ? other.getParentCompanyName() == null : this.getParentCompanyName().equals(other.getParentCompanyName()))
            && (this.getParentCompanyAddress() == null ? other.getParentCompanyAddress() == null : this.getParentCompanyAddress().equals(other.getParentCompanyAddress()))
            && (this.getParentDistributorType() == null ? other.getParentDistributorType() == null : this.getParentDistributorType().equals(other.getParentDistributorType()))
            && (this.getParentCompanyPhone() == null ? other.getParentCompanyPhone() == null : this.getParentCompanyPhone().equals(other.getParentCompanyPhone()))
            && (this.getApplicationDistributorType() == null ? other.getApplicationDistributorType() == null : this.getApplicationDistributorType().equals(other.getApplicationDistributorType()))
            && (this.getLevel() == null ? other.getLevel() == null : this.getLevel().equals(other.getLevel()))
            && (this.getAuthorizedArea() == null ? other.getAuthorizedArea() == null : this.getAuthorizedArea().equals(other.getAuthorizedArea()))
            && (this.getAuthorizedIndustry() == null ? other.getAuthorizedIndustry() == null : this.getAuthorizedIndustry().equals(other.getAuthorizedIndustry()))
            && (this.getRequestedDiscount() == null ? other.getRequestedDiscount() == null : this.getRequestedDiscount().equals(other.getRequestedDiscount()))
            && (this.getValidityEndDate() == null ? other.getValidityEndDate() == null : this.getValidityEndDate().equals(other.getValidityEndDate()))
            && (this.getAnnualTarget() == null ? other.getAnnualTarget() == null : this.getAnnualTarget().equals(other.getAnnualTarget()))
            && (this.getTotalTarget() == null ? other.getTotalTarget() == null : this.getTotalTarget().equals(other.getTotalTarget()))
            && (this.getTargetType() == null ? other.getTargetType() == null : this.getTargetType().equals(other.getTargetType()))
            && (this.getShippingCompany() == null ? other.getShippingCompany() == null : this.getShippingCompany().equals(other.getShippingCompany()))
            && (this.getShippingAddress() == null ? other.getShippingAddress() == null : this.getShippingAddress().equals(other.getShippingAddress()))
            && (this.getShippingContact() == null ? other.getShippingContact() == null : this.getShippingContact().equals(other.getShippingContact()))
            && (this.getShippingPostalCode() == null ? other.getShippingPostalCode() == null : this.getShippingPostalCode().equals(other.getShippingPostalCode()))
            && (this.getShippingPhone() == null ? other.getShippingPhone() == null : this.getShippingPhone().equals(other.getShippingPhone()))
            && (this.getShippingFax() == null ? other.getShippingFax() == null : this.getShippingFax().equals(other.getShippingFax()))
            && (this.getShippingMobile() == null ? other.getShippingMobile() == null : this.getShippingMobile().equals(other.getShippingMobile()))
            && (this.getBillingCompany() == null ? other.getBillingCompany() == null : this.getBillingCompany().equals(other.getBillingCompany()))
            && (this.getBillingAddress() == null ? other.getBillingAddress() == null : this.getBillingAddress().equals(other.getBillingAddress()))
            && (this.getBillingPhone() == null ? other.getBillingPhone() == null : this.getBillingPhone().equals(other.getBillingPhone()))
            && (this.getMailingAddress() == null ? other.getMailingAddress() == null : this.getMailingAddress().equals(other.getMailingAddress()))
            && (this.getBillingContact() == null ? other.getBillingContact() == null : this.getBillingContact().equals(other.getBillingContact()))
            && (this.getBillingMobile() == null ? other.getBillingMobile() == null : this.getBillingMobile().equals(other.getBillingMobile()))
            && (this.getSaleMan() == null ? other.getSaleMan() == null : this.getSaleMan().equals(other.getSaleMan()));
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
        result = prime * result + ((getHasDirectCustomer() == null) ? 0 : getHasDirectCustomer().hashCode());
        result = prime * result + ((getDistributorCode() == null) ? 0 : getDistributorCode().hashCode());
        result = prime * result + ((getDistributorName() == null) ? 0 : getDistributorName().hashCode());
        result = prime * result + ((getEnglishName() == null) ? 0 : getEnglishName().hashCode());
        result = prime * result + ((getCompanyAddress() == null) ? 0 : getCompanyAddress().hashCode());
        result = prime * result + ((getPostalCode() == null) ? 0 : getPostalCode().hashCode());
        result = prime * result + ((getCompanyNature() == null) ? 0 : getCompanyNature().hashCode());
        result = prime * result + ((getCompanyPhone() == null) ? 0 : getCompanyPhone().hashCode());
        result = prime * result + ((getCompanyContact() == null) ? 0 : getCompanyContact().hashCode());
        result = prime * result + ((getCompanyFax() == null) ? 0 : getCompanyFax().hashCode());
        result = prime * result + ((getBusinessEmail() == null) ? 0 : getBusinessEmail().hashCode());
        result = prime * result + ((getLegalPerson() == null) ? 0 : getLegalPerson().hashCode());
        result = prime * result + ((getLegalPersonPhone() == null) ? 0 : getLegalPersonPhone().hashCode());
        result = prime * result + ((getGeneralManager() == null) ? 0 : getGeneralManager().hashCode());
        result = prime * result + ((getGeneralManagerPhone() == null) ? 0 : getGeneralManagerPhone().hashCode());
        result = prime * result + ((getOrganizationCode() == null) ? 0 : getOrganizationCode().hashCode());
        result = prime * result + ((getTaxNumber() == null) ? 0 : getTaxNumber().hashCode());
        result = prime * result + ((getBankName() == null) ? 0 : getBankName().hashCode());
        result = prime * result + ((getAccountNumber() == null) ? 0 : getAccountNumber().hashCode());
        result = prime * result + ((getBusinessDescription() == null) ? 0 : getBusinessDescription().hashCode());
        result = prime * result + ((getBusinessCoverage() == null) ? 0 : getBusinessCoverage().hashCode());
        result = prime * result + ((getProductRange() == null) ? 0 : getProductRange().hashCode());
        result = prime * result + ((getCurrentBrands() == null) ? 0 : getCurrentBrands().hashCode());
        result = prime * result + ((getExpectedTurnover() == null) ? 0 : getExpectedTurnover().hashCode());
        result = prime * result + ((getIsBranch() == null) ? 0 : getIsBranch().hashCode());
        result = prime * result + ((getParentCompanyCode() == null) ? 0 : getParentCompanyCode().hashCode());
        result = prime * result + ((getParentCompanyName() == null) ? 0 : getParentCompanyName().hashCode());
        result = prime * result + ((getParentCompanyAddress() == null) ? 0 : getParentCompanyAddress().hashCode());
        result = prime * result + ((getParentDistributorType() == null) ? 0 : getParentDistributorType().hashCode());
        result = prime * result + ((getParentCompanyPhone() == null) ? 0 : getParentCompanyPhone().hashCode());
        result = prime * result + ((getApplicationDistributorType() == null) ? 0 : getApplicationDistributorType().hashCode());
        result = prime * result + ((getLevel() == null) ? 0 : getLevel().hashCode());
        result = prime * result + ((getAuthorizedArea() == null) ? 0 : getAuthorizedArea().hashCode());
        result = prime * result + ((getAuthorizedIndustry() == null) ? 0 : getAuthorizedIndustry().hashCode());
        result = prime * result + ((getRequestedDiscount() == null) ? 0 : getRequestedDiscount().hashCode());
        result = prime * result + ((getValidityEndDate() == null) ? 0 : getValidityEndDate().hashCode());
        result = prime * result + ((getAnnualTarget() == null) ? 0 : getAnnualTarget().hashCode());
        result = prime * result + ((getTotalTarget() == null) ? 0 : getTotalTarget().hashCode());
        result = prime * result + ((getTargetType() == null) ? 0 : getTargetType().hashCode());
        result = prime * result + ((getShippingCompany() == null) ? 0 : getShippingCompany().hashCode());
        result = prime * result + ((getShippingAddress() == null) ? 0 : getShippingAddress().hashCode());
        result = prime * result + ((getShippingContact() == null) ? 0 : getShippingContact().hashCode());
        result = prime * result + ((getShippingPostalCode() == null) ? 0 : getShippingPostalCode().hashCode());
        result = prime * result + ((getShippingPhone() == null) ? 0 : getShippingPhone().hashCode());
        result = prime * result + ((getShippingFax() == null) ? 0 : getShippingFax().hashCode());
        result = prime * result + ((getShippingMobile() == null) ? 0 : getShippingMobile().hashCode());
        result = prime * result + ((getBillingCompany() == null) ? 0 : getBillingCompany().hashCode());
        result = prime * result + ((getBillingAddress() == null) ? 0 : getBillingAddress().hashCode());
        result = prime * result + ((getBillingPhone() == null) ? 0 : getBillingPhone().hashCode());
        result = prime * result + ((getMailingAddress() == null) ? 0 : getMailingAddress().hashCode());
        result = prime * result + ((getBillingContact() == null) ? 0 : getBillingContact().hashCode());
        result = prime * result + ((getBillingMobile() == null) ? 0 : getBillingMobile().hashCode());
        result = prime * result + ((getSaleMan() == null) ? 0 : getSaleMan().hashCode());
        return result;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", id=").append(id);
        sb.append(", hasDirectCustomer=").append(hasDirectCustomer);
        sb.append(", distributorCode=").append(distributorCode);
        sb.append(", distributorName=").append(distributorName);
        sb.append(", englishName=").append(englishName);
        sb.append(", companyAddress=").append(companyAddress);
        sb.append(", postalCode=").append(postalCode);
        sb.append(", companyNature=").append(companyNature);
        sb.append(", companyPhone=").append(companyPhone);
        sb.append(", companyContact=").append(companyContact);
        sb.append(", companyFax=").append(companyFax);
        sb.append(", businessEmail=").append(businessEmail);
        sb.append(", legalPerson=").append(legalPerson);
        sb.append(", legalPersonPhone=").append(legalPersonPhone);
        sb.append(", generalManager=").append(generalManager);
        sb.append(", generalManagerPhone=").append(generalManagerPhone);
        sb.append(", organizationCode=").append(organizationCode);
        sb.append(", taxNumber=").append(taxNumber);
        sb.append(", bankName=").append(bankName);
        sb.append(", accountNumber=").append(accountNumber);
        sb.append(", businessDescription=").append(businessDescription);
        sb.append(", businessCoverage=").append(businessCoverage);
        sb.append(", productRange=").append(productRange);
        sb.append(", currentBrands=").append(currentBrands);
        sb.append(", expectedTurnover=").append(expectedTurnover);
        sb.append(", isBranch=").append(isBranch);
        sb.append(", parentCompanyCode=").append(parentCompanyCode);
        sb.append(", parentCompanyName=").append(parentCompanyName);
        sb.append(", parentCompanyAddress=").append(parentCompanyAddress);
        sb.append(", parentDistributorType=").append(parentDistributorType);
        sb.append(", parentCompanyPhone=").append(parentCompanyPhone);
        sb.append(", applicationDistributorType=").append(applicationDistributorType);
        sb.append(", level=").append(level);
        sb.append(", authorizedArea=").append(authorizedArea);
        sb.append(", authorizedIndustry=").append(authorizedIndustry);
        sb.append(", requestedDiscount=").append(requestedDiscount);
        sb.append(", validityEndDate=").append(validityEndDate);
        sb.append(", annualTarget=").append(annualTarget);
        sb.append(", totalTarget=").append(totalTarget);
        sb.append(", targetType=").append(targetType);
        sb.append(", shippingCompany=").append(shippingCompany);
        sb.append(", shippingAddress=").append(shippingAddress);
        sb.append(", shippingContact=").append(shippingContact);
        sb.append(", shippingPostalCode=").append(shippingPostalCode);
        sb.append(", shippingPhone=").append(shippingPhone);
        sb.append(", shippingFax=").append(shippingFax);
        sb.append(", shippingMobile=").append(shippingMobile);
        sb.append(", billingCompany=").append(billingCompany);
        sb.append(", billingAddress=").append(billingAddress);
        sb.append(", billingPhone=").append(billingPhone);
        sb.append(", mailingAddress=").append(mailingAddress);
        sb.append(", billingContact=").append(billingContact);
        sb.append(", billingMobile=").append(billingMobile);
        sb.append(", saleMan=").append(saleMan);
        sb.append(", businessLicense=").append(businessLicense);
        sb.append(", taxRegistrationCertificate=").append(taxRegistrationCertificate);
        sb.append(", organizationCodeCertificate=").append(organizationCodeCertificate);
        sb.append(", financialReport=").append(financialReport);
        sb.append(", attachment=").append(attachment);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }
}